package interfa

import (
	"context"
	"net"
)

type IConnection interface {
	// 启动连接，让当前连接开始工作
	Start()
	// 停止连接，结束当前连接状态
	Stop()
	// 返回ctx，用于用户自定义获取链接退出状态
	Context() context.Context
	GetTCPConnection() *net.TCPConn
	GetConnID() uint32
	RemoteAddr() net.Addr
	//直接将Message数据发送数据给远程的TCP客户端（无缓冲）
	SendMsg(msgId uint32, data []byte) error
	// 直接将Message发送远程TCP客户端（有缓冲)
	SendBuffMsg(msgId uint32, data []byte) error

	// 设置连接属性
	SetProperty(key string, value interface{})
	// 获取连接属性
	GetProperty(key string) (interface{}, error)
	// 移除连接属性
	RemoveProperty(key string)
}
